Residencia de Epidemiología
Los tipos de datos en lenguaje R se reconocen por:
int (integer): números enteros
num o dbl (numeric): números reales
chr (character): caracteres (texto)
logi o lgl (logical): valores lógicos
Date: fechas
dttm (date-time): fechas y horas
fct (factor): factores
Existen funciones de R base que permiten comprobar y coercionar los tipos de datos.
| Tipo | Comprobación | Coerción |
|---|---|---|
| character | is.character() |
as.character() |
| numeric | is.numeric() |
as.numeric() |
| integer | is.integer() |
as.integer() |
| double | is.double() |
as.double() |
| factor | is.factor() |
as.factor() |
| logical | is.logical() |
as.logical() |
| NA | is.na() |
as.na() |
Las coerciones, en ocasiones, provocan que se asignen valores NA porque no son posibles de realizar.
Ejemplo: puedo coercionar un múmero a caracter pero no puedo hacer lo inverso.
Las variables de tiempo pueden estar expresadas en diferentes unidades y formatos (fecha, hora, dia, mes, año, etc…). Dependerá de la tabla de datos, el tipo de estudio, etc.
Las fechas y las horas son complicadas porque tienen que reconciliar dos fenómenos físicos (la rotación de la Tierra y su órbita alrededor del sol), con todo un conjunto de fenómenos geopolíticos que incluyen: formatos distintos (dd/mm/aaaa - mm/dd/aaaa), husos horarios y horarios de verano (en algunas ocasiones y países).
Las variables de tiempo nos obliga a gestionar tipos de datos fecha y hora, así como también intervalos entre esos instantes.
Coexisten 2 clases de objetos básicos en el lenguaje R
POSIX (acrónimo de Portable Operating System Interface, y X viene de UNIX como seña de identidad de la API) es una norma escrita por la IEEE, que define una interfaz estándar del sistema operativo y el entorno. Los objetos fecha-hora se denominan formalmente tipos POSIXt, POSIXct, o POSIXlt (la diferencia no es relevante)
Convertir a formato Date o POSIX
Extraer componentes (día, año, mes, semana, nombre del día, etc)
Trabajar con lapsos de tiempo (intervalos, duraciones y períodos)
Operaciones y cálculos con variables de tiempo
Un año trópico dura 365 días 5 hs 48 min 45,10 s (365,242189 días), por lo que se produce un desfasaje con respecto a nuestro año calendario.
Para realizar operaciones con fechas y date-times sorteando estas dificultades, lubridate ofrece tres tipos de lapsos:
Intervalos: lapso de tiempo que ocurre entre dos instantes específicos.
Duraciones: lapso de tiempo medidos en segundos exactos (máxima unidad temporal con una longitud consistente).
Períodos: intervalo de tiempo en unidades “humanas” mayores que segundos (minutos, días, meses, etc)
Calculo de tiempo entre dos fechas
[1] 1973-05-26 UTC--2024-06-07 UTC
Para el lenguaje R, todo caracter que se encuentre entre comillas es una cadena de caracteres (en inglés llamada “string”).
Las cadenas de caracteres pueden contener letras (“a”), números (“1”) y símbolos (“&”) o una combinación de todos ellos.
Ejemplos de datos tipo cadena regular:
| Valores ejemplo | Descripción |
|---|---|
| B188 | Códigos CIE10 |
| C34.9 | Topografía CIE-O |
| 9061/6 | Morfología CIE-O |
| GAT-AAU-ATC-GAA | Secuencia ADN |
| 7600XAD | Códigos postales |
El paquete stringr se instala y activa cuando ejecutamos library(tidyverse).
str_lengtht(): devuelve longitud de cadena
str_sub(): extrae o reemplaza caracteres por posición
str_to_upper(): convierte a mayúsculas
str_to_lower(): convierte a minúsculas
str_trim(): elimina espacios en blanco
str_pad(): agrega espacios en blanco u otros caracteres
str_glue(): une cadenas de caracteres
Una expresión regular es una cadena de texto especial para describir un patrón de búsqueda que se puede utilizar generalmente para:
Una expresión regular habitualmente se construye concatenando la especificación de caracteres secuenciados.
- Detectar patrones
str_detect(): Devuelve vector lógico
Filtrar patrones str_subset(): Devuelve coincidencia en patrón
Extraer patrones str_extract(): Extrae coincidencias
Localizar patrones str_locate(): Localiza comienzo y final del patrón
Reemplazar patrones str_replace(): Reemplaza por otra cadena
| Símbolos y metacaracteres | Descripción |
|---|---|
| ^ | Inicio de la cadena |
| $ | Final de la cadena |
| [ ] | Cualquier carácter del conjunto entre paréntesis |
| [^] | Cualquier carácter no incluido en el conjunto |
| ? | Cero o una ocurrencia de lo que precede al símbolo |
| + | El caracter que le precede debe aparecer al menos una vez |
| * | El caracter que le precede debe aparecer cero, una o más veces |
| {x} | x ocurrencias del caracter que lo precede |
| {x,z} | Entre x y z ocurrencias del caracter que lo precede |
| {x,} | x o más ocurrencias de lo que lo precede |
| Símbolos y metacaracteres | Descripción |
|---|---|
| | | Une subexpresiones |
| . | Concuerda con cualquier carácter individual |
| ( ) | Agrupa subexpresiones |
| 0-9 a-z A-Z | Rangos de números, letras… |
| \ | Marca el carácter siguiente como un carácter especial |
| \. | Representa un punto dentro del patrón |
| \s | Representa un espacio en blanco dentro del patrón |
| \n | Representa un salto de línea dentro del patrón |
| \d | Representa un dígito numérico dentro del patrón |
| \w | Representa un carácter alfanumérico dentro del patrón |
Algunos ejemplos sencillos:
^[ML][0-9]$
Cadenas que comiencen con M o L y finalicen con algún número entre 0 y 9
4{3}
Cadenas que contengan tres números 4 repetidos continuos
^E\\d
Cadenas que comiencen con E y continúen con un número cualquiera
[A-z]$
Cadenas que finaliza con alguna letra mayúscula o minúscula
fct_recode(): recodifica niveles
fct_relevel(): reordena niveles
fct_expand(): agrega nuevos niveles
fct_drop(): elimina niveles no utilizados
fct_rev(): revierte orden de los niveles
fct_unique(): muestra valores únicos del factor
fct_infreq(): ordena niveles por frecuencia
fct_explicit_na(): explicita valores NA (agrega etiqueta al nivel)
fct_other(): unifica niveles concretos en “otros”
fct_lump(): unifica niveles menos frecuentes absolutos en “otros”
fct_lump_prop(): unifica niveles menos frecuentes porcentuales en “otros”
El paquete naniar es otro paquete que reúne funciones para el manejo de valores faltantes (NA en R).
Proporciona funciones analíticas y visuales de detección y gestión
Es compatible con el mundo “tidy” de tidyverse
Posibilita el trabajo de imputación (no lo trataremos en el curso)
De las muchas funciones que tiene el paquete seleccionamos algunas para mostrar que son muy útiles para nuestra tarea habitual.
miss_var_summary(): proporciona un resumen sobre los valores NA en cada variable del dataframe
gg_miss_upset(): genera un gráfico Upset sobre los valores NA de dataframe
replace_with_na(): reemplaza valores específicos con valores NA
replace_na_with(): reemplaza valores NA con valores específicos
Capítulos 14, 15, 16 y 17 del libro “R for Data Science (2e) - Data tidy”
Instituto Nacional de Epidemiología